#pragma once

#ifndef FILTER_FACTORY_H
#define FILTER_FACTORY_H

#include "Filter.h"
#include <string>
#include <vector>
#include <map>

using std::vector;
using std::map;
using std::string;

class FilterFactory
{

private:
	map<string,int> filter_map;

public:
	vector<Filter*> filter_chain;

	Filter* get_filter(int filter_index);
	Filter* get_filter(string name);
	void load_full_default_filter(void);
	bool load_filter_chain_from_file(string filename);
	void save_filter_chain_to_file(string filename);
	void reset(void);

	FilterFactory(void);
	~FilterFactory(void);

};

#endif